﻿using Might.Infrastructure.DOM;
using Might.Infrastructure.ModelicaDOM;

namespace Might.Infrastructure.Services {

    /// <summary>
    /// Interface to access services specific to Modelica language - parsing, source code finding etc.
    /// </summary>
    public interface IModelicaLanguageService {

        /// <summary>
        /// Gets source code corresponding to given ModelicaClass
        /// </summary>
        /// <param name="cls">Modelica class for which the code should be found</param>
        /// <returns>Source code of the ModelicaClass</returns>
        string GetSourceForModelicaClass(IModelicaClass cls);

        /// <summary>
        /// Proceses file - includes parsing, filling DOM, type resolving
        /// </summary>
        /// <param name="file">File to parse</param>
        void ProcessFile(IFile file);        
    }
}
